Skip to main content

Utilisation de MC_DigitalCamSwitch_HighPrecision

L'exemple BasicMotion_DigitalCamSwitch_HighPrecision.project se trouve dans le répertoire d'installation CODESYS sous ..\CODESYS SoftMotion\Examples.

Cet exemple montre comment utiliser les sorties de SMC_DigitalCamSwitch_HighPrecision pour contrôler les sorties numériques avec une résolution temporelle élevée. Les terminaux EL2258 et EL2252 de Beckhoff sont utilisés à titre d'

Avis

Les descriptions des appareils fournies par Beckhoff ne sont pas incluses dans l'exemple. Vous pouvez les télécharger directement auprès du fournisseur et les installer dans le référentiel des appareils. Pour exécuter cet exemple, vous avez besoin d'un coupleur de bus EK1100, d'une borne EL2258 et d'une borne EL2252

Important

Cet exemple a été développé et testé conformément à la révision 0017 de l'EL2258 et à la révision 0020 de l'EL2252. Cela ne sert qu'à titre d'exemple. Nous n'en garantissons pas l'exactitude. Le code source doit être testé avant utilisation. Si nécessaire, il doit être modifié pour d'autres révisions des terminaux.

Structure de la demande

L'application se compose d'un Main programme, le DigitalCamSwitch_EL2258 et DigitalCamSwitch_EL2252 des blocs fonctionnels et un coupleur de bus EK1100 avec les bornes de sortie EL2258 et EL2252.

Le DigitalCamSwitch_EL2258 et DigitalCamSwitch_EL2252 les blocs fonctionnels sont les éléments essentiels de l'exemple. Ils montrent comment utiliser Events sortie de SMC_DigitalCamSwitch_HighPrecision pour programmer des sorties numériques. Les blocs fonctionnels doivent être compris comme des exemples qui peuvent être adaptés à d'autres matériels.

DigitalCamSwitch_EL2258

. Le bloc fonctionnel fonctionne comme suit :
  1. Le bloc de fonction est initialisé sur un front montant au Enable entrée. Dans le STATE_INIT_0 et STATE_INIT_1 états, les OutputBufferReset les signaux du terminal EL2258 sont écrits et aLastEventIds tableau est initialisé. L'ID du dernier événement traité pour chaque piste est enregistré dans ce tableau. Cela permet d'éviter qu'un événement soit transféré plusieurs fois au terminal.

  2. Une fois initialisé (STATE_ACTIVE), toutes les pistes sont traitées à tour de rôle et la logique suivante est exécutée pour chaque piste :

    1. Vérifiez si le terminal EL2258 a déjà accepté les derniers événements commandés (ChannelsIn[channel].OutputOrderFeedback = ChannelsOut[channel].OutputOrderCounter).

    2. Parcourez tous les événements de la piste. Seuls les événements dont ToggleEventId est supérieur au dernier identifiant traité sont pris en compte ultérieurement. (Requête EventId_GreaterThan(event^.ToggleEventId, aLastEventIds[channel]))

      Voir la section : « Remarque sur l'ordre des événements ».

    3. Convertissez le Duration de l'événement dans un horodatage EtherCAT et écriture correspondante du ChannelsOut[channel].OutputEventState et ChannelsOut[channel].OutputEventTime sorties.

    4. Interrompez le traitement après un maximum de 5 événements.

    5. Avertissez le terminal de l'existence de nouveaux événements si au moins un événement a été détecté (ChannelsOut[channel].OutputOrderCounter := ChannelsOut[channel].OutputOrderCounter + 1).

Remarque sur l'ordre des événements

Les événements sont renvoyés par SMC_DigitalCamSwitch_HighPrecision bloc fonctionnel pour chaque piste d'un tableau. SwitchNumber et un ToggleEventId sont remboursés pour chaque événement. ToggleEventId est unique et ascendante pour chaque piste.

Pour plus d'informations, voir : ÉVÉNEMENT SMC_CAMSWITCH_TOGGLE_EVENT.

Dans l'exemple, aLastEventIds[trackNo] le tableau stocke pour chaque piste qui ToggleEventId a été transféré pour la dernière fois au terminal lors d'un appel de bloc fonctionnel précédent. Parce que le ToggleEventIds sont classés par ordre croissant, le prochain appel saura exactement quels événements doivent encore être transférés.

. Deux détails doivent encore être pris en compte :
  1. Parce que l'on ne sait pas à quel moment ToggleEventId les événements commencent, un valid le drapeau est enregistré dans EventId type de données en plus de l'ID. Pour le EventId_GreaterThan comparaison, cette valid le drapeau est pris en compte en conséquence.

  2. Le ToggleEventIds avoir le type de données 32 bits UDINT et peuvent donc, en principe, déborder avec une durée de fonctionnement respectivement longue ou une fréquence de commutation élevée. La valeur passe ensuite de 2^32-1 à 0. La fonction de comparaison EventId_GreaterThan prend également en compte les dépassements de 32 bits.

Cartographie PDO EL2258

Le ChannelsOut et ChannelsIn sorties du DigitalCamSwitch_EL2258 les blocs fonctionnels sont connectés aux canaux d'E/S respectifs de la borne EL2258. L'image suivante montre les mappages pour le canal 1. Le canal 2 est similaire ; uniquement lors de l'accès ChannelsOut et ChannelsIn l'indice est 2 et non 1.

_sm_img_mapping_el2258.png

DigitalCamSwitch_EL2252

Le principe de base est identique à DigitalCamSwitch_EL2258. La différence réside dans la façon dont les signaux sont écrits, car le terminal EL2252 ne peut programmer qu'un seul événement actif

  1. Tout d'abord, le bloc fonctionnel est initialisé dans STATE_INIT.

  2. Puis STATE_CHECK_FOR_EVENT vérifie si les événements provenant du SMC_DigitalCamSwitch_HighPrecision le bloc de fonction est en attente.

  3. Si un événement est disponible, il doit être programmé en deux cycles :

    • Les sorties et l'horodatage EtherCAT sont écrits au cours du premier cycle. Activate la sortie est réglée sur 0.

    • Au cours du deuxième cycle, Activate la sortie est réglée sur 3 STATE_ACTIVATE_EVENT_IN_EL2252. Cela active l'événement dans le terminal.

  4. Dans STATE_WAIT_UNTIL_THE_INPUTS_MATCH_THE_OUTPUTS, le système attend ensuite que l'événement soit exécuté. Les signaux provenant du Feedback les entrées du terminal sont utilisées pour cela.

Cartographie PDO EL2252

_sm_img_mapping_el2252.png

Main

Dans le programme principal, quatre commutateurs sont configurés (deux sur chaque piste). Les pistes ont également différentes compensations activées/désactivéesOnComp, OffComp) :

_sm_img_digitalcamswitch_highprecision.png

Le programme inclut les appels de blocs fonctionnels nécessaires pour activer une prévision pour l'axe et le déplacer constamment à 180°/s (*), ainsi que pour SMC_DigitalCamSwitch_HighPrecision, DigitalCamSwitch_EL2258, et DigitalCamSwitch_EL2252. Avant de démarrer le mouvement, le bus de terrain doit être complètement mis sous tension. Dans le cas contraire, les événements ne peuvent pas être transmis au terminal.

(*) Le mouvement constant a été choisi pour que l'exemple reste simple et clair. Cependant, le SMC_DigitalCamSwitch_HighPrecision bloc fonctionnel fonctionne avec tous les types de mouvements. Par exemple, il fournit également des horodatages exacts lors d'une phase d'accélération ou avec

Mise en service

  1. Créez l'application et téléchargez-la sur une manette.

  2. Démarrez l'application.